package threadlocal;

import java.text.SimpleDateFormat;

/**
 * @Classname ThreadSafeFormatter
 * @Description 线程安全的创建SimpleDateFormat
 * @Version 1.0
 * @Date 2024/1/13 19:06
 * @Author zhuzhenguo
 */
public class ThreadSafeFormatter {

    /**
     * 当线程第一次尝试访问这个 ThreadLocal 变量时，
     * ThreadLocal 将会调用这个 initialValue() 方法来创建和初始化线程的 SimpleDateFormat 实例。
     * 当线程第一次通过 get() 方法访问 ThreadLocal 变量，而且之前没有调用过 set() 方法时，initialValue() 方法会被调用。
     */
    public static ThreadLocal<SimpleDateFormat> dateFormatThreadLocal = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };

    /**
     * 在创建ThreadLocal时，就赋值
     * 日期格式线程 local2
     */
    public static ThreadLocal<SimpleDateFormat> dateFormatThreadLocal2 = ThreadLocal
            .withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

}
